home *** CD-ROM | disk | FTP | other *** search
/ Enter 2006 October / Enter 10 2006.iso / Freeware / Free Download Manager 2.1 / fdminst.exe / {app} / Firefox / extension / chrome / content / fdm_ffext.js next >
Encoding:
Text File  |  2006-08-04  |  5.5 KB  |  185 lines

  1. var fdm_FDM = Components.classes["@freedownloadmanager.org/FDMForFirefox;1"].createInstance ();
  2. fdm_FDM = fdm_FDM.QueryInterface (Components.interfaces.IFDMForFirefox);
  3.  
  4. var fdm_hoverElement = null;
  5. var fdm_lastClickCaptureTime = 0;
  6.  
  7. function fdm_dlURL (strUrl)
  8. {
  9.   var url = Components.classes["@freedownloadmanager.org/FDMUrl;1"].createInstance ();
  10.   url = url.QueryInterface (Components.interfaces.IFDMUrl);
  11.   url.Url = strUrl;
  12.   url.Referer = document.commandDispatcher.focusedWindow.document.URL;
  13.   url.Cookies = document.commandDispatcher.focusedWindow.document.cookie;
  14.  
  15.   var urlRcvr = Components.classes["@freedownloadmanager.org/FDMUrlReceiver;1"].createInstance ();
  16.   urlRcvr = urlRcvr.QueryInterface (Components.interfaces.IFDMUrlReceiver);
  17.   urlRcvr.SetUrl (url);
  18.   urlRcvr.ShowAddDownloadDialog ();
  19. }
  20.  
  21. function fdm_dlHoverElem()
  22. {
  23.   var strUrl = fdm_getURL (fdm_hoverElement);
  24.   if (strUrl == null)
  25.     return false;
  26.   fdm_dlURL (strUrl);
  27.   return true;
  28. }
  29.  
  30. window.addEventListener("mouseover", function(ev) 
  31. {
  32.       fdm_hoverElement = ev.target;
  33.  
  34. }, false);
  35.  
  36. window.addEventListener("mouseup", function(ev) 
  37. {
  38.   if(ev.altKey && !(ev.ctrlKey || ev.metaKey || ev.shiftKey) && 
  39.        fdm_FDM.IsALTShouldBePressed()) 
  40.   {
  41.      if(fdm_dlHoverElem()) 
  42.      {
  43.        ev.preventDefault();
  44.        ev.stopPropagation();
  45.        fdm_lastClickCaptureTime = new Date().getTime();
  46.        return;
  47.      }
  48.   }
  49.  
  50. }, false);
  51.  
  52. window.addEventListener("click",function(ev) 
  53. {
  54.       if(ev.altKey && new Date().getTime()-fdm_lastClickCaptureTime < 100) 
  55.       {
  56.         ev.preventDefault();
  57.         ev.stopPropagation();
  58.       }
  59.  
  60. }, true);
  61.  
  62. var fdm_LastPost = null;
  63.  
  64. var fdm_Observer = { 
  65.  observe: function (channel, topic, data) 
  66.  {
  67.    if(channel instanceof Components.interfaces.nsIUploadChannel) {
  68.       var fdm_Ext = Components.classes["@freedownloadmanager.org/FDMFirefoxExtension;1"].createInstance ();
  69.       fdm_Ext = fdm_Ext.QueryInterface (Components.interfaces.IFDMFirefoxExtension);
  70.       fdm_LastPost = channel;
  71.       fdm_Ext.LastPost = fdm_LastPost;
  72.    }
  73.  },
  74.  
  75.  QueryInterface: function (aIID) 
  76.  {
  77.    if (!aIID.equals (Components.interfaces.nsISupports) && !aIID.equals (Components.interfaces.nsIObserver))
  78.       throw Components.result.NS_ERROR_NO_INTERFACE; 
  79.    return this;
  80.  }
  81. };
  82.  
  83.  
  84. const fdm_FFObsrv = Components.classes['@mozilla.org/observer-service;1'].getService(
  85.     Components.interfaces.nsIObserverService);
  86. fdm_FFObsrv.addObserver (fdm_Observer, "http-on-modify-request", false);
  87.  
  88. window.addEventListener("load", fdm_initOverlay, false);
  89.  
  90. function fdm_initOverlay ()
  91. {
  92.   var menu = document.getElementById("contentAreaContextMenu");
  93.   menu.addEventListener("popupshowing", fdm_contextPopupShowing, false);
  94. }
  95.  
  96. function fdm_contextPopupShowing ()
  97. {
  98.   var menuitem = document.getElementById("fdm-context-item-dllink");
  99.   menuitem.label  = fdm_FDM.GetLngString ("dllink");
  100.   menuitem.hidden = fdm_FDM.IsContextMenuItemShouldBeHidden ("dllink") || 
  101.       !fdm_checkURL (fdm_getURL (document.popupNode));
  102.  
  103.   menuitem = document.getElementById("fdm-context-item-dlall");
  104.   menuitem.label  = fdm_FDM.GetLngString ("dlall");
  105.   menuitem.hidden = fdm_FDM.IsContextMenuItemShouldBeHidden ("dlall");
  106.  
  107.   menuitem = document.getElementById("fdm-context-item-dlselected");
  108.   menuitem.label  = fdm_FDM.GetLngString ("dlselected");
  109.   menuitem.hidden = fdm_FDM.IsContextMenuItemShouldBeHidden ("dlselected") ||
  110.       document.commandDispatcher.focusedWindow.getSelection().isCollapsed;
  111.  
  112.   menuitem = document.getElementById("fdm-context-item-separator");
  113.   menuitem.hidden = fdm_FDM.IsContextMenuItemShouldBeHidden ("separator1");
  114. }
  115.  
  116. function fdm_getURL (node)
  117. {
  118.   if (node instanceof HTMLImageElement)
  119.       return node.src;  
  120.  
  121.   if ((node instanceof HTMLAnchorElement) || (node instanceof HTMLAreaElement))
  122.       return node.href;
  123.  
  124.   return node.parentNode ? fdm_getURL (node.parentNode) : null;
  125. }
  126.  
  127. function fdm_checkURL (url)
  128. {
  129.    return url ? true : false;
  130. }
  131.  
  132. function fdm_dllink ()
  133. {
  134.   fdm_dlURL (fdm_getURL (document.popupNode));
  135. }
  136.  
  137. function fdm_gatherElements (url, urlListRcvr, elements, bSelectedOnly)
  138. {
  139.   const selection = document.commandDispatcher.focusedWindow.getSelection();
  140.   if (bSelectedOnly && selection.isCollapsed)
  141.       return;
  142.   for (var i = 0; i < elements.length; i++)
  143.   {
  144.     const elem = elements.item (i);
  145.     if (bSelectedOnly == false || selection.containsNode (elem, true))
  146.     {
  147.         var strUrl = fdm_getURL (elem);;
  148.         if (fdm_checkURL (strUrl))
  149.         {
  150.       url.Url = strUrl;
  151.       urlListRcvr.AddUrl (url);
  152.     }
  153.     }
  154.   }
  155. }
  156.  
  157. function fdm_gatherAllElements (bSelectedOnly)
  158. {
  159.   var url = Components.classes["@freedownloadmanager.org/FDMUrl;1"].createInstance ();
  160.   url = url.QueryInterface (Components.interfaces.IFDMUrl);
  161.   url.Referer = document.commandDispatcher.focusedWindow.document.URL;
  162.   url.Cookies = document.commandDispatcher.focusedWindow.document.cookie;
  163.  
  164.   var urlListRcvr = Components.classes["@freedownloadmanager.org/FDMUrlListReceiver;1"].createInstance ();
  165.   urlListRcvr = urlListRcvr.QueryInterface (Components.interfaces.IFDMUrlListReceiver);
  166.  
  167.   fdm_gatherElements (url, urlListRcvr, 
  168.       document.commandDispatcher.focusedWindow.document.links, bSelectedOnly);
  169.   fdm_gatherElements (url, urlListRcvr, 
  170.       document.commandDispatcher.focusedWindow.document.images, bSelectedOnly);
  171.  
  172.   urlListRcvr.ShowAddUrlListDialog ();
  173. }
  174.  
  175. function fdm_dlall ()
  176. {
  177.   fdm_gatherAllElements (false);
  178. }
  179.  
  180. function fdm_dlselected ()
  181. {
  182.   fdm_gatherAllElements (true);
  183. }
  184.  
  185.